perm filename IIISIM.FAI[GEM,BGB] blob sn#044844 filedate 1973-05-30 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00009 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	ENTRY IIISIM,IIIWD
C00005 00003		HRRZ PT,-1(P)		GET POINTER TO DISPLAY HEADER
C00008 00004		MOVE CHANCW,[002004003324]	SET UP COMMANDS FOR DD TO SCREEN ADDRESS
C00010 00005	CONSTANTS TO PLACATE IIIWD
C00011 00006	BEGIN IIIWD - COPIED FROM DISPLY.FAI[1,PDQ]
C00016 00007	BEGIN CHRTBL
C00032 00008	↑CHRTBL:	0
C00035 00009	TMPGET:	MOVE THIS,NEWPTR
C00036 ENDMK
C⊗;
ENTRY IIISIM,IIIWD

TITLE IIISIM - HAND COMPILED SAIL FROM LYNN QUAM'S IIICVT (ON DPYSUB.SAI[1,PDQ])
;
;CALL WITH:
;	PUSH P,[<pointer to III display buffer header>]
;	PUSHJ P,IIISIM
;
;INTERNAL LINTAB,PTTAB,GFSIZX,GFSIZY,GFSIZL,X0,Y0,SCALX,SCALY
;INTERNAL XCENT,YCENT,LMAR,CHASP,CHSCAL
INTERNAL OVERLAP,DDCHAN
;EXTERNAL CORGET,CORREL

	EXTERNAL JOBREL

	RET←1
	THIS←2
	SIZ←3
	I←4
	J←5
	LIN←J
	PT←6
	T←7
	OPCODE←10
	CWD←13
	CHANCW←14
	RA←16
	P←17

	DDCODE←2

↑IIISIM: MOVE SIZ,GFSIZL	;CREATE AN ARRAY DDBUF[0:(GFSIZL+2)*GFSIZY+10]
	ADDI SIZ,2
	IMUL SIZ,GFSIZY
	ADDI SIZ,1+=10
	MOVEM SIZ,DDSIZ
	MOVE THIS,44
	MOVEM THIS,OLD44
	MOVEM THIS,NEWPTR
	PUSHJ P,TMPGET
	PUSHJ P,[CORLOSS: OUTSTR [ASCIZ/Can't get core for DD buffer/]
			CALLI 1,12
			SOS (P)
			SOS (P)
			POPJ P,]
	MOVEM THIS,DDBUF
	ADDI THIS,2		;MAKE SOME BYTE POINTERS
	HRLI THIS,440100
	MOVEM THIS,FPT#
	MOVEM THIS,OPT#
	MOVE SIZ,GFSIZY		;CREATE AN ARRAY LINTAB[0:GFSIZY-1]
	PUSHJ P,TMPGET
	PUSHJ P,CORLOSS
	MOVEM THIS,LINTAB
	MOVE SIZ,GFSIZX		;CREATE AN ARRAY PTTAB[0:GFSIZX]
	ADDI SIZ,1
	PUSHJ P,TMPGET
	PUSHJ P,CORLOSS
	MOVEM THIS,PTTAB
	HRLI THIS,444400	;MAKE A BYTE POINTER INTO PTTAB
	MOVEM THIS,PTPT#
	MOVE PT,FPT		;GET READY TO SET UP LINE TABLE
	MOVEI I,=31
	MOVE J,GFSIZX
LJ:	ADD PT,[4000000]
LI:	IBP PT	
	IDPB PT,PTPT
	SOJLE J,LE
	SOJGE I,LI
	AOS PT,OPT
	MOVEI I,=31
	JRST LJ
LE:	SETZM I
	SETZ LIN,
	SETZM FIELD
	MOVE PT,LINTAB
	HRLI PT,LIN
L2:	MOVE T,GFSIZL
	ADDI T,2
	IMUL T,I
	MOVEM T,@PT
	AOJ I,
	ADDI LIN,4
	CAMGE LIN,GFSIZY
	JRST L2
	AOS LIN,FIELD
	CAIG LIN,3
	JRST L2
	MOVE SIZ,DDBUF		;FILL DDBUF WITH CORRECT OPCODE FOR GRAPHICS
	ADD SIZ,DDSIZ
	SUBI SIZ,1
	MOVEI THIS,DDCODE
	MOVEM THIS,@DDBUF
	MOVE THIS,DDBUF		;MAKE A BLT TO COPY OPCODE
	TSC THIS,THIS
	ADDI THIS,1
	BLT THIS,(SIZ)
	PUSH P,[11140]
	PUSHJ P,IIIWD
	HRRZ PT,-1(P)		;GET POINTER TO DISPLAY HEADER
	HRRZ THIS,(PT)		;AND TO BEG. OF III CODE
	MOVEM THIS,BEGBUF#
	MOVEM THIS,PC#
	ADD THIS,1(PT)		;AND TO END OF III CODE
	MOVEM THIS,ENDBUF#
	AOSA THIS,PC		;INC PC FIRST TIME THRU
DL1:	MOVE THIS,PC		;GET WORD OUT OF BUFFER
	JUMPE THIS,IIIOK
	CAML THIS,BEGBUF	;IS IT WITHIN RANGE
	CAML THIS,ENDBUF
	JRST [	CAME THIS,BEGBUF
		CAME THIS,ENDBUF	;IS IT AT END?
		OUTSTR [ASCIZ/		
Dpy jump out of bounds - IIISIM	/]	;NO, BARF THEN
		JRST IIIOK]
	MOVE THIS,(THIS)
	MOVE OPCODE,THIS
	ANDI OPCODE,77		;SEPARATE OPCODE
	AOS PC			;INCREMENT PC
	TRNE OPCODE,1		;IS IT A TEXT INSTRUCTION
	JRST [	QUAM:	PUSH P,THIS
			PUSHJ P,IIIWD
			JRST DL1]
	CAIE OPCODE,2		;IS IT A SHORT OR LONG VECTOR
	CAIN OPCODE,6
	JRST QUAM		;YES, LET QUAM DO IT
	CAIE OPCODE,42		;ANOTHER SHORT VECTOR
	CAIN OPCODE,46	
	JRST QUAM
	CAIN OPCODE,20		;IS IT A JUMP
	JRST [	HLRZ THIS,THIS
		MOVEM THIS,PC	;SET PC
		JRST DL1]	;AND GET ANOTHER INSTRUCTION
	CAIN OPCODE,24		;IS IT A JSR
	JRST [	HLRZ PT,PC	;MAKE A JUMP TO NEXT INSTRUCTION
		HRRI PT,20
		HLRZ THIS,THIS	;GET ADDRESS OF SUBROUTINE
		MOVEM PT,(THIS)	;PUT IT INTO FIRST INSTRUCTION OF SUBROUTINE
		ADDI THIS,1	;GET ADDRESS OF SECOND INSTRUCTION OF SUBR.
		MOVEM THIS,PC	;SET PC TO IT
		JRST DL1]	;AND EXECUTE SUBROUTINE
	JUMPN OPCODE,DL1	;IF ITS NOT A HALT, IGNORE IT
IIIOK:
	MOVE CHANCW,[002004003324]	;SET UP COMMANDS FOR DD TO SCREEN ADDRESS
	MOVE CWD,[116000001454]
	SKIPE OVERLAP
	TLO CWD,040000
	MOVE T,DDCHAN
	DPB T,[POINT 8,CHANCW,23]
	SETZM FIELD
	MOVE PT,DDBUF
	HRLI PT,444400
	MOVE I,FIELD
FIXL1:	DPB I,[POINT 4,CWD,23]
	MOVE T,I
	LSH T,-4
	DPB T,[POINT 5,CWD,15]
	IDPB CWD,PT
	IDPB CHANCW,PT
	MOVEI CWD,454
	ADD PT,GFSIZL
	ADDI I,4
	CAMGE I,GFSIZY
	JRST FIXL1
	AOS I,FIELD
	CAIG I,3
	JRST FIXL1
	MOVE I,[4010334]
	IDPB I,PT
	SETZ I,
	IDPB I,PT
	MOVE DDBUF
	HRRM DPYHDR
	DPYOUT DPYHDR		;OUTPUT THE BUFFER!
;	MOVE THIS,PTTAB		;RELEASE SPACE OCCUPIED BY PTTAB
;	PUSHJ P,CORREL
;	MOVE THIS,LINTAB	;RELEASE SPACE OCCUPIED BY LINTAB
;	PUSHJ P,CORREL
;	MOVE THIS,DDBUF		;RELEASE SPACE OCCUPIED BY DDBUF
;	PUSHJ P,CORREL
	MOVE 1,OLD44
	CORE 1,
	JRST [	OUTSTR[ASCIZ/Can't shrink core!/]
		CALLI 1,12
		JRST .+1 ]
	SUB P,[XWD 2,2]
	JRST @2(P)
;CONSTANTS TO PLACATE IIIWD
↑ASPECT:	0.85
↑CHASP:	1.0	
↑GFSIZX:	=512
↑GFSIZY:	=480
GFSIZL:	=16
;SQALE←←480/1024
↑SCALY:	=122880		;SCALQ*1B18
↑SCALX:	=104448		;ASPECT*SCALY
↑CHSCAL: 400000
↑XCENT:	XWD =256,0
↑YCENT:	XWD =240,0
↑LMAR:	0
;RMAR:	=1023
;YBOT:	=479
OVERLAY:1
DDCHAN:	0
↑X0:	0
↑Y0:	0

FIELD:	0

DDBUF:	0
↑LINTAB:	0
↑PTTAB:	0

DPYHDR:	400000000000
DDSIZ:	0
DDDONE:	0
BEGIN IIIWD - COPIED FROM DISPLY.FAI[1,PDQ]

A←1
B←2
C←3
D←4
X←1
Y←2
PT←5
N←6
M←7
SPT←10
K←11
P←17

COFFY←2;
CR←15
LF←12

;INTERNAL IIIWD;
;EXTERNAL LINTAB,PTTAB,GFSIZX,GFSIZY,GFSIZL,X0,Y0,SCALX,SCALY,XCENT,YCENT,LMAR,CHASP,CHSCAL
↑IIIWD:	MOVEI K,1
	MOVE LINTAB
	HRRM LT1
	HRRM LT2

	MOVE PTTAB
	HRRM PT1
	HRRM PT2
	MOVE A,-1(P)
	POP P,-1(P)
	TRNE A,1
	JRST PSTR	;A STRING
	MOVE B,A
	ANDI B,17
	CAIN B,2
	JRST	[PUSH P,A		;SHORT VECTOR WORD
		LSH A,-24
		PUSHJ P,MKSVEC
		POP P,A
		LSH A,-4
		JRST MKSVEC]
	CAIE B,6
	POPJ P,
	LDB C,[POINT 3,A,27]		;LONG VECTOR WORD
	JUMPE C,MKLVEC
	MOVE C,CHSIZS-1(C)		;CHANGE CHARACTER SIZE
	MOVE D,CHSCAL
	FSC D,233
	FMP D,C
	FMP D,CHASP
	FIX D,233000
	MOVEM D,CHSCX#
	MOVE D,CHSCAL
	FSC D,233
	FMP C,D
	FIX C,233000
	MOVEM C,CHSCY#
	IMULI C,=12
	MOVEM D,CHSC12#
	MOVE C,CHSCY
	IMULI C,COFFY
	MOVEM C,COFCC#


MKLVEC:	MOVE C,A
	LDB X,[POINT 11,C,10]
	LDB Y,[POINT 11,C,21]
	TRNE X,2000
	ORCMI X,3777
	TRNE Y,2000
	ORCMI Y,3777
	LDB C,[POINT 3,C,31]
	JRST MKVEC


MKSVEC:	MOVE C,A
	LDB X,[POINT 7,C,26]
	LDB Y,[POINT 7,C,33]
	ANDI C,3
	TRNE X,100
	ORCMI X,77
	TRNE Y,100
	ORCMI Y,77
	
MKVEC:	IMUL X,SCALX
	IMUL Y,SCALY
	MOVNS Y
	TRZE C,4
	JRST	[ADD X,XCENT		;ABSOLUTE VECTOR
		ADD Y,YCENT
		SUB X,X0
		SUB Y,Y0
		JRST .+1]
MKV2:	JRST VTAB(C)

VTAB:	JRST MKLINE			;VISIBLE VECTOR
	JRST MKPTR			;END POINT VECTOR
	JRST	[ADDB X,X0		;INVISIBLE VECTOR
		ADDB Y,Y0
		POPJ P,]
CPOPJ:	POPJ P,				;DO NOTHING


MKLINE:	PUSH P,X
	PUSH P,Y
	MOVM C,X
	MOVM D,Y
	CAMG C,D
	MOVE C,D			;C←MAX(C,D)
	HLRZM C,M;
	AOS M
	IDIV Y,M
	MOVEM Y,DY#
	IDIV X,M
	MOVEM X,DX#
	MOVE X,X0
	MOVE Y,Y0

L:	HLRZ C,X
	HLRZ D,Y
	CAMGE C,GFSIZX
	CAML D,GFSIZY
	JRST L2				;OFF SCREEN
LT1:	MOVE D,LINTAB(D)
PT1:	DPB K,PTTAB(C)
L2:	ADD X,DX
	ADD Y,DY
	SOJGE M,L
	POP P,Y
	POP P,X

MKPTR:	ADDB X,X0
	ADDB Y,Y0

MKPT:	HLRZ C,X
	HLRZ D,Y
	CAMGE C,GFSIZX
	CAML D,GFSIZY
	POPJ P,				;OFF SCREEN
LT2:	MOVE D,LINTAB(D)
PT2:	DPB K,PTTAB(C)
	POPJ P,


CHARS:	0
	0

PSTR:	MOVEM A,CHARS
	MOVE COFCC
	ADDM Y0
	MOVE PT,[POINT 7,CHARS,-1]

CLOOP:	ILDB N,PT
	JUMPE N,	[MOVN COFCC
			ADDM Y0
			POPJ P,]
	CAIN N,CR
	JRST	[MOVE A,LMAR		;CARRIAGE RETURN
		MOVEM A,X0
		JRST CLOOP]
	CAIN A,LF
	JRST	[MOVE A,CHSC12		;LINE FEED
		ADDM A,Y0
		JRST CLOOP]
	HLRZ SPT,CHRTBL(N)
	HRLI SPT,(<POINT 5,0>)
	HRRZ N,CHRTBL(N)
SLOOP:	JUMPLE N,CLOOP
	ILDB C,SPT
	ILDB X,SPT
	ILDB Y,SPT
	TRNE X,20
	ORCMI X,37
	TRNE Y,20
	ORCMI Y,37
	MOVNS Y
	IMUL X,CHSCX
	IMUL Y,CHSCY
	JUMPE C,	[PUSHJ P,MKPTR
			JRST LX1]
	CAIE C,2
	JRST	[ADDM X,X0
		ADDM Y,Y0
		SOJA N,SLOOP]
	PUSHJ P,MKLINE
LX1:	SOJA N,SLOOP

CHSIZS:	1.33
	1.9999
	2.34
	2.67
	4.01
	5.33
	8.13

BEND IIIWD
BEGIN CHRTBL
stdh←11
stdw←6
; Stroke table
; XWD <table address>,<number of strokes>
; table:	byte (5) pen,dx,dy

c1:	byte (5) 3,0,4,  2,2,-2,  2,2,2  3,-2,4,  2,0,-6, 3,4,-2
c2:	byte (5) 3,0,3,  2,0,2,  2,1,1,  2,1,0,  2,1,-1,  2,1,<1
		>,3,-1,-1,  2,0,-2,  2,1,-1,  3,-1,1,  2,-1,<-1
		>,2,-1,0,  2,-1,1,  3,6,-3
c3:	byte (5) 2,1,1,  2,0,4,  2,1,1,  2,2,0,  2,1,-1,  2,-1,<-1
		>,2,-3,0,  3,3,0,  2,1,-1,  2,-1,-1,  2,-3,0,  3,6,-2
c4:	byte (5) 3,0,4,  2,2,2,  2,2,-2,  3,2,-4
c5:	byte (5) 3,0,5,  2,4,0,  2,0,-1,  3,2,-4
c6:	byte (5) 3,1,4,  2,2,0,  3,0,2,  2,-1,0,  2,-1,-1,  2,0,<-2
		>,2,1,-1,  2,1,0,  3,3,-2
c7:	byte (5) 3,1,2,  2,0,4,  3,-1,0,  2,4,0,  3,-1,0,  2,0,<-4
		>,3,3,-2
c10:	byte (5) 3,0,2,  2,2,2,  3,-2,3,  2,0,-1,  2,4,-4, 3,2,-2
c12:	byte (5) 3,0,-stdh
c13:	byte (5) 3,0,2,  2,1,-1,  2,1,1,  2,0,5,  2,1,1,  2,1,-1,  3,2,-7
c14:	byte (5) 3,0,3,  2,4,0,  3,0,3,  2,-4,0,  3,2,2,  2,0,-4,  3,4,-4
c16:	byte (5) 3,1,3,  2,1,1,  2,0,1,  2,1,1,  2,1,<-1
		>,  2,0,-1,  2,-1,-1,  2,-1,1,  3,0,1,  2,-1,<1
		>,  2,-1,-1,  2,0,-1,  2,1,-1,  3,5,-3
c17:	byte (5) 3,0,3,  2,0,1,  2,1,1,  2,2,0,  2,1,<-1
		>,2,0,2,  2,-2,2,  2,-1,0,  3,3,-4,  2,0,<-1
		>,2,-1,-1,  2,-2,0,  2,-1,1,  3,6,-3
c20:	byte (5) 3,4,7,  2,-3,0,  2,-1,-1,  2,0,-2,  2,1,<-1
		>,2,3,0,  3,2,-3
c21:	byte (5) 3,0,3,  2,3,0,  2,1,1,  2,0,2,  2,-1,1,  2,-3,0,  3,6,-7
c22:	byte (5) 3,0,4,  2,0,2,  2,1,1,  2,2,0,  2,1,-1,  2,0,-2,  3,2,-4
c23:	byte (5) 3,0,7,  2,0,-2,  2,1,-1,  2,2,0,  2,1,1,  2,0,2,  3,2,-7
c24:	byte (5) 3,0,10,  2,2,-6,  2,2,6,  3,-1,-2,  2,-2,0,  3,5,-6
c25:	byte (5) 3,0,2,  2,4,0,  2,0,3,  2,-3,0,  3,-1,3,  2,4,<0
		>,2,0,-3,  3,2,-5
c26:	byte (5) 3,0,4,  2,0,2,  2,1,1,  2,2,0,  2,1,-1,  2,0,<-2
		>,2,-1,-1,  2,-2,0,  2,-1,1,  3,1,0,  2,2,2,  3,-2,0,  2,2,-2,  3,3,-4
c27:	byte (5) 3,2,0,  2,-2,2,  2,4,4,  2,-2,2,  3,-2,-2,  2,4,0,  3,-4,-4,  2,4,<0
		>,3,2,-2
c30:	byte (5) 2,4,0,  3,2,0
c31:	byte (5) 3,2,3,  2,2,2,  2,-2,2,  3,-2,-2,  2,4,0,  3,2,-5
c32:	byte (5) 3,0,10,  2,1,1,  2,1,0,  2,0,-1,  2,1,0,  2,1,1,  3,2,-11
c33:	byte (5) 3,0,1,  2,4,6,  3,0,-2,  2,-4,0,  3,0,-2,  2,4,0,  3,2,-2
c34:	byte (5) 3,1,2,  2,2,0,  3,0,2,  2,-2,2,  2,2,2,  3,3,-10
c35:	byte (5) 3,1,2,  2,2,0,  3,-2,2,  2,2,2,  2,-2,2,  3,5,-10
c36:	byte (5) 3,0,3,  2,4,0,  3,0,2,  2,-4,0,  3,0,2,  2,4,0,  3,2,-7
c37:	byte (5) 3,0,6,  2,2,-2,  2,2,2,  3,2,-6
c40:	byte (5) 3,stdw,0
c41:	byte (5) 3,2,1,  2,0,1,  3,0,2,  2,0,4,  3,4,-10
c42:	byte (5) 3,1,7,  2,0,2,  3,2,0,  2,0,-2,  3,3,-7
c43:	byte (5) 3,1,2,  2,0,5,  3,2,0,  2,0,-5,  3,1,1,  2,-4,0,  3,0,<3
		>,2,4,0,  3,2,-6
c44:	byte (5) 3,2,1,  2,0,10,  3,2,-2,  2,-1,1,  2,-2,0,  2,-1,<-1
		>,2,0,-1,  2,1,-1,  2,2,0,  2,1,-1,  2,0,-2,  2,-1,<-1
		>,2,-2,0,  2,-1,1,  3,6,-3
c45:	byte (5) 3,0,2,  2,0,1,  2,4,4,  2,0,1,  3,-3,0,  2,-1,<0
		>,2,0,-1,  2,1,0,  2,0,1,  3,3,-5,  2,1,0,  2,0,<-1
		>,2,-1,0,  2,1,0,  3,3,-1
c46:	byte (5) 3,4,4,  2,-2,-2,  2,-1,0,  2,-1,1,  2,0,1,  2,2,2,  2,0,<1
		>,2,-1,1,  2,-1,-1,  2,0,-1,  2,4,-4,  3,2,-2
c47:	byte (5) 3,0,7,  2,1,1,  2,0,1,  2,1,0,  2,0,-1,  2,-1,0,  3,5,-7
c50:	byte (5) 3,4,2,  2,-2,2,  2,0,2,  2,2,2,  3,2,-10
c51:	byte (5) 3,0,2,  2,2,2,  2,0,2,  2,-2,2,  3,6,-10
c52:	byte (5) 3,2,2,  2,0,6,  3,-2,-1,  2,4,-4,  3,0,2,  2,-4,<0
		>,3,0,-2,  2,4,4,  3,2,-7
c53:	byte (5) 3,2,3,  2,0,4,  3,-2,-2,  2,4,0,  3,2,-5
c54:	byte (5) 3,0,1,  2,1,1,  2,0,1,  3,5,-3
c55:	byte (5) 3,0,5,  2,4,0,  3,2,-5
c56:	byte (5) 3,1,2,  0,1,0,  3,4,-2
c57:	byte (5) 3,0,3,  2,4,4,  3,2,-7
c60:	byte (5) 3,0,3,  2,4,4,  2,-1,1,  2,-2,0,  2,-1,-1,  2,0,<-4
		>,2,1,-1,  2,2,0,  2,1,1,  2,0,4,  3,2,-7
c61:	byte (5) 3,1,2,  2,2,0,  3,-1,0,  2,0,6,  2,-1,-1,  3,5,-7
c62:	byte (5) 3,0,7,  2,1,1,  2,2,0,  2,1,-1,  2,0,-1,  2,-4,-4,  2,4,0,  3,2,-2
c63:	byte (5) 3,0,3,  2,1,-1,  2,2,0,  2,1,1,  2,0,1,  2,-1,1,  2,-1,<0
		>,3,1,0,  2,1,1,  2,0,1,  2,-1,1,  2,-2,0,  2,-1,-1,  3,6,-7
c64:	byte (5) 3,3,2,  2,0,6,  2,-3,-3,  2,0,-1,  2,4,0,  3,2,-4
c65:	byte (5) 3,0,3,  2,1,-1,  2,2,0,  2,1,1,  2,0,2,  2,-1,1,  2,-3,<0
		>,2,0,2,  2,4,0,  3,2,-10
c66:	byte (5) 3,0,5,  2,0,-2,  2,1,-1,  2,2,0,  2,1,1,  2,0,1,  2,-1,1,  2,-3,<0
		>,2,0,1,  2,2,2,  2,1,0,  3,3,-10
c67:	byte (5) 3,0,10,  2,4,0,  2,-2,-4,  2,0,-2,  3,4,-2
c70:	byte (5) 3,1,5,  2,-1,-1,  2,0,-1,  2,1,-1,  2,2,0,  2,1,<1
		>,2,0,1,  2,-1,1,  2,-2,0,  2,-1,1,  2,0,1,  2,1,<1
		>,2,2,0,  2,1,-1,  2,0,-1,  2,-1,-1,  3,3,-5
c71:	byte (5) 3,1,2,  2,1,0,  2,2,2,  2,0,3,  2,-1,1,  2,-2,0,  2,-1,<-1
		>,2,0,-1,  2,1,-1,  2,3,0,  3,2,-5
c72:	byte (5) 3,0,3,  2,1,0,  3,0,3,  2,-1,0,  3,6,-6
c73:	byte (5) 3,0,1,  2,1,1,  2,0,1,  3,0,3,  2,-1,0,  3,6,-6
c74:	byte (5) 3,3,3,  2,-2,2,  2,2,2,  3,3,-7
c75:	byte (5) 3,0,4,  2,4,0,  3,0,2,  2,-4,0,  3,6,-6
c76:	byte (5) 3,1,7,  2,2,-2,  2,-2,-2,  3,5,-3
c77:	byte (5) 3,1,2,  2,1,0,  3,0,2,  2,0,1,  2,2,2,  2,-1,1,  2,-2,<0
		>,2,-1,-1,  3,6,-7
c100:	byte (5) 3,3,2,  2,-2,0,  2,-1,1,  2,0,4,  2,1,1,  2,2,0,  2,1,<-1
		>,2,0,-3,  2,-2,0,  2,0,2,  2,2,0,  3,2,-6
c101:	byte (5) 3,0,2,  2,0,5,  2,1,1,  2,2,0,  2,1,-1,  2,0,-5,  3,-4,3,  2,4,0,  3,2,-5
c102:	byte (5) 3,0,2,  2,3,0,  2,1,1,  2,0,1,  2,-1,1,  2,-3,0,  3,3,<0
		>,2,1,1,  2,0,1,  2,-1,1,  2,-3,0,  2,0,-6,  3,6,-2
c103:	byte (5) 3,4,7,  2,-1,1,  2,-2,0,  2,-1,-1,  2,0,-4,  2,1,-1,  2,2,0,  2,1,1,  3,2,-3
c104:	byte (5) 3,0,2,  2,3,0,  2,1,1,  2,0,4,  2,-1,1,  2,-3,0,  3,1,0,  2,0,-6,  3,5,-2
c105:	byte (5) 3,4,2,  2,-4,0,  2,0,6,  2,4,0,  3,-1,-3,  2,-3,0,  3,6,-5
c106:	byte (5) 3,0,2,  2,0,6,  2,4,0,  3,-1,-3,  2,-3,0,  3,6,-5
c107:	byte (5) 3,3,4,  2,1,0,  2,0,-1,  2,-1,-1,  2,-2,0,  2,-1,<1
		>,2,0,4,  2,1,1,  2,2,0,  2,1,-1,  3,2,-7
c110:	byte (5) 3,0,2,  2,0,6,  3,0,-3,  2,4,0,  3,0,3,  2,0,-6,  3,2,-2
c111:	byte (5) 3,1,2,  2,2,0,  3,-1,0,  2,0,6,  3,-1,0,  2,2,0,  3,3,-10
c112:	byte (5) 3,0,3,  2,1,-1,  2,2,0,  2,1,1,  2,0,5,  3,2,-10
c113:	byte (5) 3,0,2,  2,0,6,  3,4,0,  2,-3,-3,  2,3,-3,  3,4,-2
c114:	byte (5) 3,0,10,  2,0,-6,  2,4,0,  3,2,-2
c115:	byte (5) 3,0,2,  2,0,6,  2,2,-2,  2,2,2,  2,0,-6,  3,2,-2
c116:	byte (5) 3,0,2,  2,0,6,  2,4,-6,  2,0,6,  3,2,-10
c117:	byte (5) 3,0,3,  2,0,4,  2,1,1,  2,2,0,  2,1,-1,  2,0,-4,  2,-1,-1,  2,-2,0,  2,-1,1,  3,6,-3
c120:	byte (5) 3,0,2,  2,0,6,  2,3,0,  2,1,-1,  2,0,-1,  2,-1,-1,  2,-3,0,  3,6,-5
c121:	byte (5) 3,0,3,  2,0,4,  2,1,1,  2,2,0,  2,1,-1,  2,0,-3,  2,-2,<-2
		>,2,-1,0,  2,-1,1,  3,2,2,  2,2,-2,  3,2,-3
c122:	byte (5) 3,0,2,  2,0,6,  2,3,0,  2,1,-1,  2,0,-1,  2,-1,-1,  2,-3,<0
		>,3,1,0,  2,3,-3,  3,2,-2
c123:	byte (5) 3,4,7,  2,-1,1,  2,-2,0,  2,-1,-1,  2,0,-1,  2,1,-1,  2,2,<0
		>,2,1,-1,  2,0,-1,  2,-1,-1,  2,-2,0,  2,-1,1,  3,6,-3
c124:	byte (5) 3,0,10,  2,4,0,  3,-2,0,  2,0,-6,  3,4,-2
c125:	byte (5) 3,0,3,  2,0,5,  3,4,0,  2,0,-5,  2,-1,-1,  2,-2,0,  2,-1,1,  3,6,-3
c126:	byte (5) 3,0,10,  2,0,-3,  2,2,-3,  2,2,3,  2,0,3,  3,2,-10
c127:	byte (5) 3,0,2,  2,0,6,  3,4,0,  2,0,-6,  2,-2,2,  2,-2,-2,  3,6,-2
c130:	byte (5) 3,0,2,  2,4,6,  3,-4,0,  2,4,-6,  3,2,-2
c131:	byte (5) 3,2,2,  2,0,3,  2,-2,3,  3,4,0,  2,-2,-3,  3,4,-5
c132:	byte (5) 3,0,10,  2,4,0,  2,-4,-6,  2,4,0,  3,2,-2
c133:	byte (5) 3,3,1,  2,-2,0,  2,0,10,  2,2,0,  3,3,-11
c134:	byte (5) 3,0,7,  2,4,-4,  3,2,-3
c135:	byte (5) 3,1,11,  2,2,0,  2,0,-10,  2,-2,0,  3,5,-1
c136:	byte (5) 3,2,2,  2,0,6,  3,-2,-2,  2,2,2,  2,2,-2,  3,2,-6
c137:	byte (5) 3,2,3,  2,-2,2,  2,2,2,  3,-2,-2,  2,4,0,  3,2,-5
c140:	byte (5) 3,3,10,  2,-1,0,  2,0,1,  2,1,0,  2,0,-1,  2,1,-1,  3,2,-7
c141:	byte (5) 3,1,6,  2,2,0,  2,1,-1,  2,0,-3,  2,-3,0,  2,-1,1,  2,1,<1
		>,2,3,0,  3,2,-4
c142:	byte (5) 3,0,10,  2,0,-6,  2,3,0,  2,1,1,  2,0,2,  2,-1,1,  2,-3,0,  3,6,-6
c143:	byte (5) 3,4,5,  2,-1,1,  2,-2,0,  2,-1,-1,  2,0,-2,  2,1,-1,  2,3,0,  3,2,-2
c144:	byte (5) 3,4,10,  2,0,-6,  2,-3,0,  2,-1,1,  2,0,2,  2,1,1,  2,3,0,  3,2,-6
c145:	byte (5) 3,3,2,  2,-2,0,  2,-1,1,  2,0,2,  2,1,1,  2,2,0,  2,1,<-1
		>,2,-1,-1,  2,-3,0,  3,6,-4
c146:	byte (5) 3,1,2,  2,0,5,  2,1,1,  2,1,0,  2,1,-1,  3,-2,-2,  2,-2,0,  3,6,-5
c147:	byte (5) 3,1,0,  2,2,0,  2,1,1,  2,0,4,  2,-1,1,  2,-2,0,  2,-1,<-1
		>,2,0,-2,  2,1,-1,  2,3,0,  3,2,-2
c150:	byte (5) 3,0,2,  2,0,6,  3,0,-2,  2,3,0,  2,1,-1,  2,0,-3,  3,2,-2
c151:	byte (5) 3,2,2,  2,0,3,  3,0,1,  2,0,1,  3,4,-7
c152:	byte (5) 3,0,1,  2,1,-1,  2,2,0,  2,1,1,  2,0,4,  3,0,1,  2,0,1,  3,2,-7
c153:	byte (5) 3,0,2,  2,0,6,  3,4,-2,  2,-2,-2,  2,-2,0,  3,2,0,  2,2,-2,  3,2,-2
c154:	byte (5) 3,1,2,  2,0,6,  3,5,-10
c155:	byte (5) 3,0,2,  2,0,4,  2,1,0,  2,1,-1,  2,1,1,  2,1,-1,  2,0,-4,  3,-2,0,  2,0,4,  3,4,-5
c156:	byte (5) 3,0,2,  2,0,4,  2,1,-1,  2,1,1,  2,1,0,  2,1,-1,  2,0,-3,  3,2,-2
c157:	byte (5) 3,0,3,  2,0,2,  2,1,1,  2,2,0,  2,1,-1,  2,0,-2,  2,-1,-1,  2,-2,0,  2,-1,1,  3,6,-3
c160:	byte (5) 2,0,6,  2,3,0,  2,1,-1,  2,0,-2,  2,-1,-1,  2,-3,0,  3,6,-2
c161:	byte (5) 3,4,2,  2,-3,0,  2,-1,1,  2,0,2,  2,1,1,  2,2,0,  2,1,-1,  2,0,-5,  3,2,0
c162:	byte (5) 3,0,2,  2,0,4,  3,0,-2,  2,2,2,  2,1,0,  2,1,-1,  3,2,-5
c163:	byte (5) 3,0,2,  2,3,0,  2,1,1,  2,-1,1,  2,-2,0,  2,-1,1,  2,1,1,  2,3,0,  3,2,-6
c164:	byte (5) 3,0,6,  2,4,0,  3,-2,2,  2,0,-5,  2,1,-1,  2,1,0,  3,2,-2
c165:	byte (5) 3,0,6,  2,0,-3,  2,1,-1,  2,2,0,  2,1,1,  2,0,3,  3,2,-6
c166:	byte (5) 3,0,6,  2,0,-2,  2,2,-2,  2,2,2,  2,0,2,  3,2,-6
c167:	byte (5) 3,0,6,  2,0,-3,  2,1,-1,  2,1,1,  2,1,-1,  2,1,1,  2,0,3,  3,2,-6
c170:	byte (5) 3,0,2,  2,4,4,  3,-4,0,  2,4,-4,  3,2,-2
c171:	byte (5) 2,4,4,  2,0,2,  3,-4,0,  2,0,-2,  2,2,-2,  3,4,-2
c172:	byte (5) 3,0,6,  2,4,0,  2,-4,-4,  2,4,0,  3,2,-2
c173:	byte (5) 3,4,11,  2,-1,-1,  2,0,-2,  2,-1,-1,  2,1,-1,  2,0,-2,  2,1,-1,  3,2,-1
c174:	byte (5) 3,2,11,  2,0,-11,  3,4,0
c175:	byte (5) 3,2,2,  2,0,1,  2,-2,2,  2,2,2,  2,0,1,  3,0,-1,  2,2,<-2
		>,2,-2,-2,  3,4,-3
c176:	byte (5) 3,0,11,  2,1,-1,  2,0,-2,  2,1,-1,  2,-1,-1,  2,0,-2,  2,-1,-1,  3,6,-1
↑CHRTBL:	0
	xwd c1,6
	xwd c2,16
	xwd c3,14
	xwd c4,4
	xwd c5,4
	xwd c6,11
	xwd c7,7
	xwd c10,6
	0
	xwd c12,1
	xwd c13,7
	xwd c14,7
	0
	xwd c16,16
	xwd c17,16
	xwd c20,7
	xwd c21,7
	xwd c22,7
	xwd c23,7
	xwd c24,6
	xwd c25,10
	xwd c26,16
	xwd c27,11
	xwd c30,2
	xwd c31,6
	xwd c32,7
	xwd c33,7
	xwd c34,6
	xwd c35,6
	xwd c36,7
	xwd c37,4
	xwd c40,1
	xwd c41,5
	xwd c42,5
	xwd c43,11
	xwd c44,17
	xwd c45,17
	xwd c46,14
	xwd c47,7
	xwd c50,5
	xwd c51,5
	xwd c52,11
	xwd c53,5
	xwd c54,4
	xwd c55,3
	xwd c56,3
	xwd c57,3
	xwd c60,13
	xwd c61,6
	xwd c62,10
	xwd c63,16
	xwd c64,6
	xwd c65,12
	xwd c66,14
	xwd c67,5
	xwd c70,21
	xwd c71,13
	xwd c72,5
	xwd c73,6
	xwd c74,4
	xwd c75,5
	xwd c76,4
	xwd c77,11
	xwd c100,14
	xwd c101,11
	xwd c102,15
	xwd c103,11
	xwd c104,11
	xwd c105,7
	xwd c106,6
	xwd c107,13
	xwd c110,7
	xwd c111,7
	xwd c112,6
	xwd c113,6
	xwd c114,4
	xwd c115,6
	xwd c116,5
	xwd c117,12
	xwd c120,10
	xwd c121,14
	xwd c122,12
	xwd c123,15
	xwd c124,5
	xwd c125,10
	xwd c126,6
	xwd c127,7
	xwd c130,5
	xwd c131,6
	xwd c132,5
	xwd c133,5
	xwd c134,3
	xwd c135,5
	xwd c136,6
	xwd c137,6
	xwd c140,7
	xwd c141,11
	xwd c142,10
	xwd c143,10
	xwd c144,10
	xwd c145,12
	xwd c146,10
	xwd c147,13
	xwd c150,7
	xwd c151,5
	xwd c152,10
	xwd c153,10
	xwd c154,3
	xwd c155,12
	xwd c156,10
	xwd c157,12
	xwd c160,7
	xwd c161,11
	xwd c162,7
	xwd c163,11
	xwd c164,7
	xwd c165,7
	xwd c166,6
	xwd c167,10
	xwd c170,5
	xwd c171,6
	xwd c172,5
	xwd c173,10
	xwd c174,3
	xwd c175,11
	xwd c176,10
	0

BEND CHRTBL
TMPGET:	MOVE THIS,NEWPTR
	ADDB SIZ,NEWPTR
	CORE SIZ,
	POPJ P,
	AOS (P)
	POPJ P,
OLD44:	0
NEWPTR:	0

end